The introduction of low-cost microprocessors has been one impetus in the push towards distributed processing. Almost all such microprocessors have the capability and the standard interfaces to be interconnected into distributed processing systems. In such systems, processors may be installed at remote sites near where processing is needed, and intercommunication among processors is usually done utilizing serial transmission techniques.
The 16- and 32-bit microprocessors, however, contain both hardware and software interlocks that provide a capability for multiprocessor system configurations. Such configurations can be done either by satellite processing (i.e. using special coprocessors), or by utilizing I/0 processors that free the CPU from complex tasks that formerly required considerable CPU time.
These external intelligent requesters cooperate, and compete, for mastership not only of the common shared bus or system bus, but also of other shared resources of the system (e.g., memory, I/0 space, peripherals, etc.). In such cases, a management protocol is required to make the relationship more equitable than a common master-slave relationship in which the resource-request line is dominated by a single system component. In the most general case, external intelligent requesters may all be CPUs and thus form a multiprocessor system in which each resource requester has equal importance and capability. In this way, functions may be distributed fully among those CPUs sharing common system resources. A system designer can thus partition the problem into separate tasks that each of several processors can handle individually and in parallel, increasing system performance and throughput. In such configurations, these complete and self-contained systems intercommunicate utilizing parallel transmission techniques, usually via the system bus. Appropriate connection links among processors are provided to free the system's designer from having to define which is the master and which is the slave. These are typically referred to as bus arbiters. Furthermore, the system bus allows each processor to work asynchronously and, therefore, both fast and slow microprocessors can be incorporated in the same system. Further, bus arbitration schemes can be provided that distinguish between a serial data link and a parallel data link, the serial data link typically being much slower than the parallel data link.
The most important considerations in multiprocessor systems utilizing an arbitration scheme are: (1) the processors should be able to interact properly with each other or with a peripheral unit without mangling the data; (2) they should be able to share system resources; and (3) synchronization among the processors should be ensured. Usually, a mechanism is formed to assure that these requisites are provided by software operating systems, but they do require proper hardware support. Most conventional microprocessors have appropriate control pins and special instructions for semaphore signaling, which temporarily renders one CPU the "system master" that controls a certain critical shared resource, such as a memory, and excludes all other processors from utilizing this resource. Such hardware support allows the development of operating systems that provide the mechanisms for multiprocessing implementation.